const Koa = require('koa');
const Router = require('koa-router');

const app = new Koa();
const router = new Router();


// 另一种写法   const router = require('koa-router')();   // 意思是引入并实例化

router
    .get('/', async (ctx) => {
        ctx.body = '这是首页';
    })
    .get('/news', async (ctx) => {
        ctx.body = '新闻页';
    });

/**
 * ===========================================
 *
 * 另一种写法：
 *
 * router.get('/' async (ctx) => {});
 *
 * router.get('/news' async (ctx) => {});
 *
 * ===========================================
 */






/**
 * ===========================================
 *
 * get 传值
 *
 * ===========================================
 */
router.get('/detail', async (ctx) => {

    // ctx.query;  // 这是获取 get传值  ? 后面的参数对象

    // ctx.querystring; // 这是获取 get传值  ? 后面的参数字符串

    // ctx.url;

    // ctx.request;

    // ctx.request.query;

    // ctx.request.querystring;

});


/**
 * ===========================================
 *
 * get 传值  动态路由
 *
 * ===========================================
 */
router.get('/list/:id',  async (ctx) => {

    console.log(ctx.params); // { id: 123} // 获取动态路由的数据
    ctx.body = '商品页面';
});
router.get('/product/:id/:cid',  async (ctx) => {

    console.log(ctx.params); // { id: 123, cid: 456 } // 获取动态路由的数据
    ctx.body = '商品页面';
})







app
    .use(router.routes())  // 启动路由
    .use(router.allowedMethods());  // 可以配置也可以忽略。
                                    // 作用： 这是官方文档的推荐用法，
                                    // 我们可以看到 router.allowedMethods()
                                    // 用在了路由匹配router.routes()之后
                                    // 所以在当所有路由中间件最后调用。
                                    // 此时根据ctx.status设置response响应头


app.listen(8088);
console.log('Server run http://localhost:8088');